<!-- This comment will put IE 6, 7 and 8 in quirks mode -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>shark::AbstractClustering&lt; InputT &gt; Class Template Reference</title>
<script type="text/javaScript" src="search/search.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3.0.1/es5/tex-mml-chtml.js"></script>
<script src="../../mlstyle.js"></script>
<link href="../css/besser.css" rel="stylesheet" type="text/css"/>
</head>
<!-- pretty cool: each body gets an id tag which is the basename of the web page  -->
<!--              and allows for page-specific CSS. this is client-side scripted, -->
<!--              so the id will not yet show up in the served source code -->
<script type="text/javascript">
    jQuery(document).ready(function () {
        var url = jQuery(location).attr('href');
        var pname = url.substr(url.lastIndexOf("/")+1, url.lastIndexOf(".")-url.lastIndexOf("/")-1);
        jQuery('#this_url').html('<strong>' + pname + '</strong>');
        jQuery('body').attr('id', pname);
    });
</script>
<body>
    <div id="shark_old">
        <div id="wrap">
            <div id="header">
                <div id="site-name"><a href="../../sphinx_pages/build/html/index.html">Shark machine learning library</a></div>
                <ul id="nav">
                    <li >
                        <a href="../../sphinx_pages/build/html/rest_sources/installation.html">Installation</a>
                    </li>
		    <li >
                        <a href="../../sphinx_pages/build/html/rest_sources/tutorials/tutorials.html">Tutorials</a>
                    </li>
		    <li >
                        <a href="../../sphinx_pages/build/html/rest_sources/benchmark.html">Benchmarks</a>
                    </li>
                    <li class="active">
                        <a href="classes.html">Documentation</a>
                        <ul>
                            <li class="first"></li>
                            <li><a href="../../sphinx_pages/build/html/rest_sources/quickref/quickref.html">Quick references</a></li>
                            <li><a href="classes.html">Class list</a></li>
                            <li class="last"><a href="group__shark__globals.html">Global functions</a></li>
                        </ul>
                    </li>
                </ul>
            </div>
        </div>
    </div>
<div id="doxywrapper">
<!--
    <div id="global_doxytitle">Doxygen<br>Documentation:</div>
-->
    <div id="navrow_wrapper">
<!-- Generated by Doxygen 1.9.8 -->
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespaceshark.html">shark</a></li><li class="navelem"><a class="el" href="classshark_1_1_abstract_clustering.html">AbstractClustering</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="classshark_1_1_abstract_clustering-members.html">List of all members</a> &#124;
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a>  </div>
  <div class="headertitle"><div class="title">shark::AbstractClustering&lt; InputT &gt; Class Template Reference<span class="mlabels"><span class="mlabel">abstract</span></span><div class="ingroups"><a class="el" href="group__models.html">Models</a> &raquo; <a class="el" href="group__clustering.html">Clustering Algorithms</a></div></div></div>
</div><!--header-->
<div class="contents">

<p>Base class for clustering.  
 <a href="classshark_1_1_abstract_clustering.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="_abstract_clustering_8h_source.html">shark/Models/Clustering/AbstractClustering.h</a>&gt;</code></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for shark::AbstractClustering&lt; InputT &gt;:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><img src="classshark_1_1_abstract_clustering__inherit__graph.png" border="0" usemap="#ashark_1_1_abstract_clustering_3_01_input_t_01_4_inherit__map" alt="Inheritance graph"/></div>
<map name="ashark_1_1_abstract_clustering_3_01_input_t_01_4_inherit__map" id="ashark_1_1_abstract_clustering_3_01_input_t_01_4_inherit__map">
<area shape="rect" title="Base class for clustering." alt="" coords="148,94,318,135"/>
<area shape="rect" href="classshark_1_1_hierarchical_clustering.html" title="Clusters defined by a binary space partitioning tree." alt="" coords="138,183,328,223"/>
<area shape="poly" title=" " alt="" coords="236,150,236,182,230,182,230,150"/>
<area shape="rect" href="classshark_1_1_i_nameable.html" title="This class is an interface for all objects which can have a name." alt="" coords="5,13,130,39"/>
<area shape="poly" title=" " alt="" coords="106,44,197,91,194,96,103,49"/>
<area shape="rect" href="classshark_1_1_i_parameterizable.html" title="Top level interface for everything that holds parameters." alt="" coords="153,5,313,46"/>
<area shape="poly" title=" " alt="" coords="236,62,236,94,230,94,230,62"/>
<area shape="rect" href="classshark_1_1_i_serializable.html" title="Abstracts serializing functionality." alt="" coords="336,13,468,39"/>
<area shape="poly" title=" " alt="" coords="366,48,272,96,270,91,364,44"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-types" name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a2e5bf11e84922991bf66f4198a96e4e7" id="r_a2e5bf11e84922991bf66f4198a96e4e7"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_abstract_clustering.html#a2e5bf11e84922991bf66f4198a96e4e7">Feature</a> { <a class="el" href="classshark_1_1_abstract_clustering.html#a2e5bf11e84922991bf66f4198a96e4e7a183a78cbfd5ccf4d69f2b0e733af6ad3">HAS_SOFT_MEMBERSHIP</a> = 1
 }</td></tr>
<tr class="separator:a2e5bf11e84922991bf66f4198a96e4e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a519bea30fafabdaff33a85a1c27b8a85" id="r_a519bea30fafabdaff33a85a1c27b8a85"><td class="memItemLeft" align="right" valign="top">typedef InputT&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_abstract_clustering.html#a519bea30fafabdaff33a85a1c27b8a85">InputType</a></td></tr>
<tr class="separator:a519bea30fafabdaff33a85a1c27b8a85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42901ac7a67744a4dd7c785bb9407d7c" id="r_a42901ac7a67744a4dd7c785bb9407d7c"><td class="memItemLeft" align="right" valign="top">typedef unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_abstract_clustering.html#a42901ac7a67744a4dd7c785bb9407d7c">OutputType</a></td></tr>
<tr class="separator:a42901ac7a67744a4dd7c785bb9407d7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6865af40b0cab718706e9360b29f2a2c" id="r_a6865af40b0cab718706e9360b29f2a2c"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structshark_1_1_batch.html">Batch</a>&lt; <a class="el" href="classshark_1_1_abstract_clustering.html#a519bea30fafabdaff33a85a1c27b8a85">InputType</a> &gt;::type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_abstract_clustering.html#a6865af40b0cab718706e9360b29f2a2c">BatchInputType</a></td></tr>
<tr class="separator:a6865af40b0cab718706e9360b29f2a2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0857a0698bf699be93ccf595406bdf96" id="r_a0857a0698bf699be93ccf595406bdf96"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structshark_1_1_batch.html">Batch</a>&lt; <a class="el" href="classshark_1_1_abstract_clustering.html#a42901ac7a67744a4dd7c785bb9407d7c">OutputType</a> &gt;::type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_abstract_clustering.html#a0857a0698bf699be93ccf595406bdf96">BatchOutputType</a></td></tr>
<tr class="separator:a0857a0698bf699be93ccf595406bdf96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a981308504604ce9fb03222b07f28a5b7" id="r_a981308504604ce9fb03222b07f28a5b7"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classshark_1_1_typed_flags.html">TypedFlags</a>&lt; <a class="el" href="classshark_1_1_abstract_clustering.html#a2e5bf11e84922991bf66f4198a96e4e7">Feature</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_abstract_clustering.html#a981308504604ce9fb03222b07f28a5b7">Features</a></td></tr>
<tr class="separator:a981308504604ce9fb03222b07f28a5b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad7affb5327cd577e528b50405564ca71" id="r_ad7affb5327cd577e528b50405564ca71"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classshark_1_1_typed_feature_not_available_exception.html">TypedFeatureNotAvailableException</a>&lt; <a class="el" href="classshark_1_1_abstract_clustering.html#a2e5bf11e84922991bf66f4198a96e4e7">Feature</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_abstract_clustering.html#ad7affb5327cd577e528b50405564ca71">FeatureNotAvailableException</a></td></tr>
<tr class="separator:ad7affb5327cd577e528b50405564ca71"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classshark_1_1_i_parameterizable"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classshark_1_1_i_parameterizable')"><img src="closed.png" alt="-"/>&#160;Public Types inherited from <a class="el" href="classshark_1_1_i_parameterizable.html">shark::IParameterizable&lt; VectorType &gt;</a></td></tr>
<tr class="memitem:a2ad5e2e60b2b352988b41f46024d790b inherit pub_types_classshark_1_1_i_parameterizable" id="r_a2ad5e2e60b2b352988b41f46024d790b"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="_c_svm_linear_8cpp.html#ab106d665148183a2dc94dcf8716c9203">VectorType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_i_parameterizable.html#a2ad5e2e60b2b352988b41f46024d790b">ParameterVectorType</a></td></tr>
<tr class="separator:a2ad5e2e60b2b352988b41f46024d790b inherit pub_types_classshark_1_1_i_parameterizable"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a75bdfc87e939ec6310fc3ea8fd7e1f49" id="r_a75bdfc87e939ec6310fc3ea8fd7e1f49"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classshark_1_1_abstract_clustering.html#a981308504604ce9fb03222b07f28a5b7">Features</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_abstract_clustering.html#a75bdfc87e939ec6310fc3ea8fd7e1f49">features</a> () const</td></tr>
<tr class="separator:a75bdfc87e939ec6310fc3ea8fd7e1f49"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a320b9fed0c193643f47977269f83a3b6" id="r_a320b9fed0c193643f47977269f83a3b6"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_abstract_clustering.html#a320b9fed0c193643f47977269f83a3b6">updateFeatures</a> ()</td></tr>
<tr class="separator:a320b9fed0c193643f47977269f83a3b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a48971e367865d932891873c21cb4e849" id="r_a48971e367865d932891873c21cb4e849"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_abstract_clustering.html#a48971e367865d932891873c21cb4e849">hasSoftMembershipFunction</a> () const</td></tr>
<tr class="separator:a48971e367865d932891873c21cb4e849"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c913637b84340135b606912228f5851" id="r_a2c913637b84340135b606912228f5851"><td class="memItemLeft" align="right" valign="top">virtual std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_abstract_clustering.html#a2c913637b84340135b606912228f5851">numberOfClusters</a> () const =0</td></tr>
<tr class="memdesc:a2c913637b84340135b606912228f5851"><td class="mdescLeft">&#160;</td><td class="mdescRight">return the number of clusters  <br /></td></tr>
<tr class="separator:a2c913637b84340135b606912228f5851"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a877c93a51f9416ce0f7dec4645086fc8" id="r_a877c93a51f9416ce0f7dec4645086fc8"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classshark_1_1_shape.html">Shape</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_abstract_clustering.html#a877c93a51f9416ce0f7dec4645086fc8">inputShape</a> () const =0</td></tr>
<tr class="separator:a877c93a51f9416ce0f7dec4645086fc8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b9a35a33f14aab84aac1cbf767bb813" id="r_a1b9a35a33f14aab84aac1cbf767bb813"><td class="memItemLeft" align="right" valign="top">virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_abstract_clustering.html#a1b9a35a33f14aab84aac1cbf767bb813">hardMembership</a> (<a class="el" href="classshark_1_1_abstract_clustering.html#a519bea30fafabdaff33a85a1c27b8a85">InputType</a> const &amp;pattern) const</td></tr>
<tr class="memdesc:a1b9a35a33f14aab84aac1cbf767bb813"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute best matching cluster.  <br /></td></tr>
<tr class="separator:a1b9a35a33f14aab84aac1cbf767bb813"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af11841eae50fa5d031a7a6706e0fa9d9" id="r_af11841eae50fa5d031a7a6706e0fa9d9"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classshark_1_1_abstract_clustering.html#a0857a0698bf699be93ccf595406bdf96">BatchOutputType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_abstract_clustering.html#af11841eae50fa5d031a7a6706e0fa9d9">hardMembership</a> (<a class="el" href="classshark_1_1_abstract_clustering.html#a6865af40b0cab718706e9360b29f2a2c">BatchInputType</a> const &amp;patterns) const</td></tr>
<tr class="memdesc:af11841eae50fa5d031a7a6706e0fa9d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute best matching cluster for a batch of inputs.  <br /></td></tr>
<tr class="separator:af11841eae50fa5d031a7a6706e0fa9d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abccfaab4d2d5c26ff5a16d7b085365d1" id="r_abccfaab4d2d5c26ff5a16d7b085365d1"><td class="memItemLeft" align="right" valign="top">virtual RealVector&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_abstract_clustering.html#abccfaab4d2d5c26ff5a16d7b085365d1">softMembership</a> (<a class="el" href="classshark_1_1_abstract_clustering.html#a519bea30fafabdaff33a85a1c27b8a85">InputType</a> const &amp;pattern) const</td></tr>
<tr class="memdesc:abccfaab4d2d5c26ff5a16d7b085365d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute cluster membership function.  <br /></td></tr>
<tr class="separator:abccfaab4d2d5c26ff5a16d7b085365d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad6babdbb7b5979c5651698982fea7ca0" id="r_ad6babdbb7b5979c5651698982fea7ca0"><td class="memItemLeft" align="right" valign="top">virtual RealMatrix&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_abstract_clustering.html#ad6babdbb7b5979c5651698982fea7ca0">softMembership</a> (<a class="el" href="classshark_1_1_abstract_clustering.html#a6865af40b0cab718706e9360b29f2a2c">BatchInputType</a> const &amp;patterns) const</td></tr>
<tr class="memdesc:ad6babdbb7b5979c5651698982fea7ca0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute cluster membership function.  <br /></td></tr>
<tr class="separator:ad6babdbb7b5979c5651698982fea7ca0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a716046b5e610f0a26e3462d8dda27f45" id="r_a716046b5e610f0a26e3462d8dda27f45"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_abstract_clustering.html#a716046b5e610f0a26e3462d8dda27f45">read</a> (<a class="el" href="namespaceshark.html#ada68729491840669e47c8ad42282424f">InArchive</a> &amp;archive)</td></tr>
<tr class="memdesc:a716046b5e610f0a26e3462d8dda27f45"><td class="mdescLeft">&#160;</td><td class="mdescRight">empty default implementation of <a class="el" href="classshark_1_1_i_serializable.html#ad4ad9a7c274deff642f91e98417fbc63" title="Read the component from the supplied archive.">ISerializable::read</a>  <br /></td></tr>
<tr class="separator:a716046b5e610f0a26e3462d8dda27f45"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1256454c153c93d532738311bf7600a0" id="r_a1256454c153c93d532738311bf7600a0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_abstract_clustering.html#a1256454c153c93d532738311bf7600a0">write</a> (<a class="el" href="namespaceshark.html#af4f8eb8e9618f5236b71bbcb12b8a524">OutArchive</a> &amp;archive) const</td></tr>
<tr class="memdesc:a1256454c153c93d532738311bf7600a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">empty default implementation of <a class="el" href="classshark_1_1_i_serializable.html#a9bddedd42933c922e323b73131f62f12" title="Write the component to the supplied archive.">ISerializable::write</a>  <br /></td></tr>
<tr class="separator:a1256454c153c93d532738311bf7600a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classshark_1_1_i_nameable"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classshark_1_1_i_nameable')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classshark_1_1_i_nameable.html">shark::INameable</a></td></tr>
<tr class="memitem:a877dbdfc6b58ea836495143cea44a98c inherit pub_methods_classshark_1_1_i_nameable" id="r_a877dbdfc6b58ea836495143cea44a98c"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_i_nameable.html#a877dbdfc6b58ea836495143cea44a98c">~INameable</a> ()</td></tr>
<tr class="separator:a877dbdfc6b58ea836495143cea44a98c inherit pub_methods_classshark_1_1_i_nameable"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9893f99314de30cd472e649c235d0db4 inherit pub_methods_classshark_1_1_i_nameable" id="r_a9893f99314de30cd472e649c235d0db4"><td class="memItemLeft" align="right" valign="top">virtual std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_i_nameable.html#a9893f99314de30cd472e649c235d0db4">name</a> () const</td></tr>
<tr class="memdesc:a9893f99314de30cd472e649c235d0db4 inherit pub_methods_classshark_1_1_i_nameable"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns the name of the object  <br /></td></tr>
<tr class="separator:a9893f99314de30cd472e649c235d0db4 inherit pub_methods_classshark_1_1_i_nameable"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classshark_1_1_i_parameterizable"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classshark_1_1_i_parameterizable')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classshark_1_1_i_parameterizable.html">shark::IParameterizable&lt; VectorType &gt;</a></td></tr>
<tr class="memitem:a9e3a11172e74d1aa7292f3de4e2b6ebc inherit pub_methods_classshark_1_1_i_parameterizable" id="r_a9e3a11172e74d1aa7292f3de4e2b6ebc"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_i_parameterizable.html#a9e3a11172e74d1aa7292f3de4e2b6ebc">~IParameterizable</a> ()</td></tr>
<tr class="separator:a9e3a11172e74d1aa7292f3de4e2b6ebc inherit pub_methods_classshark_1_1_i_parameterizable"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afaa2ba692ab64a0edbff60d7ee6794db inherit pub_methods_classshark_1_1_i_parameterizable" id="r_afaa2ba692ab64a0edbff60d7ee6794db"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classshark_1_1_i_parameterizable.html#a2ad5e2e60b2b352988b41f46024d790b">ParameterVectorType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_i_parameterizable.html#afaa2ba692ab64a0edbff60d7ee6794db">parameterVector</a> () const</td></tr>
<tr class="memdesc:afaa2ba692ab64a0edbff60d7ee6794db inherit pub_methods_classshark_1_1_i_parameterizable"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the parameter vector.  <br /></td></tr>
<tr class="separator:afaa2ba692ab64a0edbff60d7ee6794db inherit pub_methods_classshark_1_1_i_parameterizable"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5e35d1a10ff36fa72ea787baa40e9ad inherit pub_methods_classshark_1_1_i_parameterizable" id="r_ad5e35d1a10ff36fa72ea787baa40e9ad"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_i_parameterizable.html#ad5e35d1a10ff36fa72ea787baa40e9ad">setParameterVector</a> (<a class="el" href="classshark_1_1_i_parameterizable.html#a2ad5e2e60b2b352988b41f46024d790b">ParameterVectorType</a> const &amp;newParameters)</td></tr>
<tr class="memdesc:ad5e35d1a10ff36fa72ea787baa40e9ad inherit pub_methods_classshark_1_1_i_parameterizable"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the parameter vector.  <br /></td></tr>
<tr class="separator:ad5e35d1a10ff36fa72ea787baa40e9ad inherit pub_methods_classshark_1_1_i_parameterizable"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed1e8d1d4dbde387e2f6a25141ed3a20 inherit pub_methods_classshark_1_1_i_parameterizable" id="r_aed1e8d1d4dbde387e2f6a25141ed3a20"><td class="memItemLeft" align="right" valign="top">virtual std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_i_parameterizable.html#aed1e8d1d4dbde387e2f6a25141ed3a20">numberOfParameters</a> () const</td></tr>
<tr class="memdesc:aed1e8d1d4dbde387e2f6a25141ed3a20 inherit pub_methods_classshark_1_1_i_parameterizable"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the number of parameters.  <br /></td></tr>
<tr class="separator:aed1e8d1d4dbde387e2f6a25141ed3a20 inherit pub_methods_classshark_1_1_i_parameterizable"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classshark_1_1_i_serializable"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classshark_1_1_i_serializable')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classshark_1_1_i_serializable.html">shark::ISerializable</a></td></tr>
<tr class="memitem:a7baa9ce108d7278822297ce15882782a inherit pub_methods_classshark_1_1_i_serializable" id="r_a7baa9ce108d7278822297ce15882782a"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_i_serializable.html#a7baa9ce108d7278822297ce15882782a">~ISerializable</a> ()</td></tr>
<tr class="memdesc:a7baa9ce108d7278822297ce15882782a inherit pub_methods_classshark_1_1_i_serializable"><td class="mdescLeft">&#160;</td><td class="mdescRight">Virtual d'tor.  <br /></td></tr>
<tr class="separator:a7baa9ce108d7278822297ce15882782a inherit pub_methods_classshark_1_1_i_serializable"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abdda0c5b8e065b8afbac2cba8f58e841 inherit pub_methods_classshark_1_1_i_serializable" id="r_abdda0c5b8e065b8afbac2cba8f58e841"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_i_serializable.html#abdda0c5b8e065b8afbac2cba8f58e841">load</a> (<a class="el" href="namespaceshark.html#ada68729491840669e47c8ad42282424f">InArchive</a> &amp;archive, unsigned int version)</td></tr>
<tr class="memdesc:abdda0c5b8e065b8afbac2cba8f58e841 inherit pub_methods_classshark_1_1_i_serializable"><td class="mdescLeft">&#160;</td><td class="mdescRight">Versioned loading of components, calls read(...).  <br /></td></tr>
<tr class="separator:abdda0c5b8e065b8afbac2cba8f58e841 inherit pub_methods_classshark_1_1_i_serializable"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5bf66fa8db15cc529bec98976a2f5255 inherit pub_methods_classshark_1_1_i_serializable" id="r_a5bf66fa8db15cc529bec98976a2f5255"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_i_serializable.html#a5bf66fa8db15cc529bec98976a2f5255">save</a> (<a class="el" href="namespaceshark.html#af4f8eb8e9618f5236b71bbcb12b8a524">OutArchive</a> &amp;archive, unsigned int version) const</td></tr>
<tr class="memdesc:a5bf66fa8db15cc529bec98976a2f5255 inherit pub_methods_classshark_1_1_i_serializable"><td class="mdescLeft">&#160;</td><td class="mdescRight">Versioned storing of components, calls write(...).  <br /></td></tr>
<tr class="separator:a5bf66fa8db15cc529bec98976a2f5255 inherit pub_methods_classshark_1_1_i_serializable"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4560a94e8f4908fe8627e41e7d965735 inherit pub_methods_classshark_1_1_i_serializable" id="r_a4560a94e8f4908fe8627e41e7d965735"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_i_serializable.html#a4560a94e8f4908fe8627e41e7d965735">BOOST_SERIALIZATION_SPLIT_MEMBER</a> ()</td></tr>
<tr class="separator:a4560a94e8f4908fe8627e41e7d965735 inherit pub_methods_classshark_1_1_i_serializable"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a75910ba675486528e27893a95608510d" id="r_a75910ba675486528e27893a95608510d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classshark_1_1_abstract_clustering.html#a981308504604ce9fb03222b07f28a5b7">Features</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classshark_1_1_abstract_clustering.html#a75910ba675486528e27893a95608510d">m_features</a></td></tr>
<tr class="separator:a75910ba675486528e27893a95608510d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><div class="compoundTemplParams">template&lt;class InputT&gt;<br />
class shark::AbstractClustering&lt; InputT &gt;</div><p>Base class for clustering. </p>
<dl class="section user"><dt></dt><dd>Clustering algorithms vary widely in the data structures on which they operate. For example, simple centroid-based approaches such as k-means are mutually incompatible with tree-based hierarchical clustering. This interface class is the attempt to cast different cluster descriptions into a minimal common interface that is useful for prediction.</dd></dl>
<dl class="section user"><dt></dt><dd>There are at least two common types of predictions made with clusterings. The first one is the assignment of the best matching cluster to a patters, such as in vector quantization or unsupervised clustering. This is often referred to as "hard clustering". The second one is the computation of a membership function ("soft clustering"). The membership of a pattern to a cluster is non-negative, and the total membership should add to one.</dd></dl>
<dl class="section user"><dt></dt><dd>This interface makes minimal assumptions to allow for these types of predictions. It assumes that clusters can be enumbered (identified by an index), and that at least a membership test can be made (hard clustering). It is optional to provide a membership function. Only one of the two interfaces for best matching cluster or membership function need to be implemented, since the best matching cluster can be deduced from the membership function. However, often the best matching cluster can be computed more efficiently than the membership function. In these cases both interface functions should be implemented.</dd></dl>
<dl class="section user"><dt></dt><dd>The purpose of this interface is to act as a common super class to different data structures describing the outcome of a clustering operation. The interface allows all of these data structures to be used in the two clustering model classes: <a class="el" href="classshark_1_1_hard_clustering_model.html" title="Model for &quot;hard&quot; clustering.">HardClusteringModel</a> and <a class="el" href="classshark_1_1_soft_clustering_model.html" title="Model for &quot;soft&quot; clustering.">SoftClusteringModel</a>. </dd></dl>

<p class="definition">Definition at line <a class="el" href="_abstract_clustering_8h_source.html#l00097">97</a> of file <a class="el" href="_abstract_clustering_8h_source.html">AbstractClustering.h</a>.</p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a id="a6865af40b0cab718706e9360b29f2a2c" name="a6865af40b0cab718706e9360b29f2a2c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6865af40b0cab718706e9360b29f2a2c">&#9670;&#160;</a></span>BatchInputType</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class InputT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="structshark_1_1_batch.html">Batch</a>&lt;<a class="el" href="classshark_1_1_abstract_clustering.html#a519bea30fafabdaff33a85a1c27b8a85">InputType</a>&gt;::type <a class="el" href="classshark_1_1_abstract_clustering.html">shark::AbstractClustering</a>&lt; InputT &gt;::BatchInputType</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="_abstract_clustering_8h_source.html#l00102">102</a> of file <a class="el" href="_abstract_clustering_8h_source.html">AbstractClustering.h</a>.</p>

</div>
</div>
<a id="a0857a0698bf699be93ccf595406bdf96" name="a0857a0698bf699be93ccf595406bdf96"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0857a0698bf699be93ccf595406bdf96">&#9670;&#160;</a></span>BatchOutputType</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class InputT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="structshark_1_1_batch.html">Batch</a>&lt;<a class="el" href="classshark_1_1_abstract_clustering.html#a42901ac7a67744a4dd7c785bb9407d7c">OutputType</a>&gt;::type <a class="el" href="classshark_1_1_abstract_clustering.html">shark::AbstractClustering</a>&lt; InputT &gt;::BatchOutputType</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="_abstract_clustering_8h_source.html#l00103">103</a> of file <a class="el" href="_abstract_clustering_8h_source.html">AbstractClustering.h</a>.</p>

</div>
</div>
<a id="ad7affb5327cd577e528b50405564ca71" name="ad7affb5327cd577e528b50405564ca71"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad7affb5327cd577e528b50405564ca71">&#9670;&#160;</a></span>FeatureNotAvailableException</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class InputT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classshark_1_1_typed_feature_not_available_exception.html">TypedFeatureNotAvailableException</a>&lt;<a class="el" href="classshark_1_1_abstract_clustering.html#a2e5bf11e84922991bf66f4198a96e4e7">Feature</a>&gt; <a class="el" href="classshark_1_1_abstract_clustering.html">shark::AbstractClustering</a>&lt; InputT &gt;::FeatureNotAvailableException</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="_abstract_clustering_8h_source.html#l00108">108</a> of file <a class="el" href="_abstract_clustering_8h_source.html">AbstractClustering.h</a>.</p>

</div>
</div>
<a id="a981308504604ce9fb03222b07f28a5b7" name="a981308504604ce9fb03222b07f28a5b7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a981308504604ce9fb03222b07f28a5b7">&#9670;&#160;</a></span>Features</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class InputT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classshark_1_1_typed_flags.html">TypedFlags</a>&lt;<a class="el" href="classshark_1_1_abstract_clustering.html#a2e5bf11e84922991bf66f4198a96e4e7">Feature</a>&gt; <a class="el" href="classshark_1_1_abstract_clustering.html">shark::AbstractClustering</a>&lt; InputT &gt;::Features</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="_abstract_clustering_8h_source.html#l00108">108</a> of file <a class="el" href="_abstract_clustering_8h_source.html">AbstractClustering.h</a>.</p>

</div>
</div>
<a id="a519bea30fafabdaff33a85a1c27b8a85" name="a519bea30fafabdaff33a85a1c27b8a85"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a519bea30fafabdaff33a85a1c27b8a85">&#9670;&#160;</a></span>InputType</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class InputT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">typedef InputT <a class="el" href="classshark_1_1_abstract_clustering.html">shark::AbstractClustering</a>&lt; InputT &gt;<a class="el" href="_multi_task_svm_8cpp.html#a0dea9a3a85d327080d9b617903508925">::InputType</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="_abstract_clustering_8h_source.html#l00100">100</a> of file <a class="el" href="_abstract_clustering_8h_source.html">AbstractClustering.h</a>.</p>

</div>
</div>
<a id="a42901ac7a67744a4dd7c785bb9407d7c" name="a42901ac7a67744a4dd7c785bb9407d7c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a42901ac7a67744a4dd7c785bb9407d7c">&#9670;&#160;</a></span>OutputType</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class InputT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">typedef unsigned int <a class="el" href="classshark_1_1_abstract_clustering.html">shark::AbstractClustering</a>&lt; InputT &gt;::OutputType</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="_abstract_clustering_8h_source.html#l00101">101</a> of file <a class="el" href="_abstract_clustering_8h_source.html">AbstractClustering.h</a>.</p>

</div>
</div>
<h2 class="groupheader">Member Enumeration Documentation</h2>
<a id="a2e5bf11e84922991bf66f4198a96e4e7" name="a2e5bf11e84922991bf66f4198a96e4e7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2e5bf11e84922991bf66f4198a96e4e7">&#9670;&#160;</a></span>Feature</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class InputT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classshark_1_1_abstract_clustering.html#a2e5bf11e84922991bf66f4198a96e4e7">shark::AbstractClustering::Feature</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a2e5bf11e84922991bf66f4198a96e4e7a183a78cbfd5ccf4d69f2b0e733af6ad3" name="a2e5bf11e84922991bf66f4198a96e4e7a183a78cbfd5ccf4d69f2b0e733af6ad3"></a>HAS_SOFT_MEMBERSHIP&#160;</td><td class="fielddoc"></td></tr>
</table>

<p class="definition">Definition at line <a class="el" href="_abstract_clustering_8h_source.html#l00105">105</a> of file <a class="el" href="_abstract_clustering_8h_source.html">AbstractClustering.h</a>.</p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a75bdfc87e939ec6310fc3ea8fd7e1f49" name="a75bdfc87e939ec6310fc3ea8fd7e1f49"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75bdfc87e939ec6310fc3ea8fd7e1f49">&#9670;&#160;</a></span>features()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class InputT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classshark_1_1_abstract_clustering.html#a981308504604ce9fb03222b07f28a5b7">Features</a> &amp; <a class="el" href="classshark_1_1_abstract_clustering.html">shark::AbstractClustering</a>&lt; InputT &gt;::features </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="_abstract_clustering_8h_source.html#l00108">108</a> of file <a class="el" href="_abstract_clustering_8h_source.html">AbstractClustering.h</a>.</p>

</div>
</div>
<a id="af11841eae50fa5d031a7a6706e0fa9d9" name="af11841eae50fa5d031a7a6706e0fa9d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af11841eae50fa5d031a7a6706e0fa9d9">&#9670;&#160;</a></span>hardMembership() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class InputT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classshark_1_1_abstract_clustering.html#a0857a0698bf699be93ccf595406bdf96">BatchOutputType</a> <a class="el" href="classshark_1_1_abstract_clustering.html">shark::AbstractClustering</a>&lt; InputT &gt;::hardMembership </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classshark_1_1_abstract_clustering.html#a6865af40b0cab718706e9360b29f2a2c">BatchInputType</a> const &amp;&#160;</td>
          <td class="paramname"><em>patterns</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Compute best matching cluster for a batch of inputs. </p>
<dl class="section user"><dt></dt><dd>This function should be overriden by sub-classes to compute the cluster best matching the input pattern. The (typically slow) default implementation is to return the arg max of the soft membership function for every pattern. </dd></dl>

<p>Reimplemented in <a class="el" href="classshark_1_1_hierarchical_clustering.html#af55379385229c1619311fc42d6033a0c">shark::HierarchicalClustering&lt; InputT &gt;</a>.</p>

<p class="definition">Definition at line <a class="el" href="_abstract_clustering_8h_source.html#l00142">142</a> of file <a class="el" href="_abstract_clustering_8h_source.html">AbstractClustering.h</a>.</p>

<p class="reference">References <a class="el" href="namespaceshark.html#af2ab10364feb8a631e0866dcf2f1a4ad">shark::batchSize()</a>, <a class="el" href="_exception_8h.html#a73abb5049a0168d72a48e72dda41708b">SHARK_ASSERT</a>, and <a class="el" href="classshark_1_1_abstract_clustering.html#abccfaab4d2d5c26ff5a16d7b085365d1">shark::AbstractClustering&lt; InputT &gt;::softMembership()</a>.</p>

</div>
</div>
<a id="a1b9a35a33f14aab84aac1cbf767bb813" name="a1b9a35a33f14aab84aac1cbf767bb813"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b9a35a33f14aab84aac1cbf767bb813">&#9670;&#160;</a></span>hardMembership() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class InputT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual unsigned int <a class="el" href="classshark_1_1_abstract_clustering.html">shark::AbstractClustering</a>&lt; InputT &gt;::hardMembership </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classshark_1_1_abstract_clustering.html#a519bea30fafabdaff33a85a1c27b8a85">InputType</a> const &amp;&#160;</td>
          <td class="paramname"><em>pattern</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Compute best matching cluster. </p>
<dl class="section user"><dt></dt><dd>This function should be overriden by sub-classes to compute the cluster best matching the input pattern. The (typically slow) default implementation is to create a batch of size 1 and return the result of the batch call to hardMembership </dd></dl>

<p class="definition">Definition at line <a class="el" href="_abstract_clustering_8h_source.html#l00129">129</a> of file <a class="el" href="_abstract_clustering_8h_source.html">AbstractClustering.h</a>.</p>

<p class="reference">References <a class="el" href="namespaceshark.html#a1531880b9b4076854b0b26441d353242">shark::getBatchElement()</a>, and <a class="el" href="classshark_1_1_abstract_clustering.html#a1b9a35a33f14aab84aac1cbf767bb813">shark::AbstractClustering&lt; InputT &gt;::hardMembership()</a>.</p>

<p class="reference">Referenced by <a class="el" href="classshark_1_1_hard_clustering_model.html#ae05f53c008a1bc11b6a9ae0330798a98">shark::HardClusteringModel&lt; InputT &gt;::eval()</a>, <a class="el" href="classshark_1_1_hard_clustering_model.html#a9125dbc5b7937b976adbb8c9867b77a2">shark::HardClusteringModel&lt; InputT &gt;::eval()</a>, and <a class="el" href="classshark_1_1_abstract_clustering.html#a1b9a35a33f14aab84aac1cbf767bb813">shark::AbstractClustering&lt; InputT &gt;::hardMembership()</a>.</p>

</div>
</div>
<a id="a48971e367865d932891873c21cb4e849" name="a48971e367865d932891873c21cb4e849"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a48971e367865d932891873c21cb4e849">&#9670;&#160;</a></span>hasSoftMembershipFunction()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class InputT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classshark_1_1_abstract_clustering.html">shark::AbstractClustering</a>&lt; InputT &gt;::hasSoftMembershipFunction </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Tests whether the clustering can compute a (soft) member ship function, describing the membership of a sample to the different clusters. </p>

<p class="definition">Definition at line <a class="el" href="_abstract_clustering_8h_source.html#l00113">113</a> of file <a class="el" href="_abstract_clustering_8h_source.html">AbstractClustering.h</a>.</p>

<p class="reference">References <a class="el" href="classshark_1_1_abstract_clustering.html#a2e5bf11e84922991bf66f4198a96e4e7a183a78cbfd5ccf4d69f2b0e733af6ad3">shark::AbstractClustering&lt; InputT &gt;::HAS_SOFT_MEMBERSHIP</a>, and <a class="el" href="classshark_1_1_abstract_clustering.html#a75910ba675486528e27893a95608510d">shark::AbstractClustering&lt; InputT &gt;::m_features</a>.</p>

<p class="reference">Referenced by <a class="el" href="classshark_1_1_soft_clustering_model.html#affdb2f86777b7ea99eab8d4b46b5bc5c">shark::SoftClusteringModel&lt; InputT &gt;::SoftClusteringModel()</a>.</p>

</div>
</div>
<a id="a877c93a51f9416ce0f7dec4645086fc8" name="a877c93a51f9416ce0f7dec4645086fc8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a877c93a51f9416ce0f7dec4645086fc8">&#9670;&#160;</a></span>inputShape()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class InputT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classshark_1_1_shape.html">Shape</a> <a class="el" href="classshark_1_1_abstract_clustering.html">shark::AbstractClustering</a>&lt; InputT &gt;::inputShape </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Implemented in <a class="el" href="classshark_1_1_centroids.html#a162b069a4d71fcec6e7dae5c8251cb2f">shark::Centroids</a>, and <a class="el" href="classshark_1_1_hierarchical_clustering.html#abee669691bdffb90189c70cc49974e78">shark::HierarchicalClustering&lt; InputT &gt;</a>.</p>

<p class="reference">Referenced by <a class="el" href="classshark_1_1_hard_clustering_model.html#a39c6ffa9343fa4f64d51291879a4b653">shark::HardClusteringModel&lt; InputT &gt;::inputShape()</a>, and <a class="el" href="classshark_1_1_soft_clustering_model.html#aec891941d34d604d57e42d4c47e86bdf">shark::SoftClusteringModel&lt; InputT &gt;::inputShape()</a>.</p>

</div>
</div>
<a id="a2c913637b84340135b606912228f5851" name="a2c913637b84340135b606912228f5851"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2c913637b84340135b606912228f5851">&#9670;&#160;</a></span>numberOfClusters()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class InputT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual std::size_t <a class="el" href="classshark_1_1_abstract_clustering.html">shark::AbstractClustering</a>&lt; InputT &gt;::numberOfClusters </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>return the number of clusters </p>

<p>Implemented in <a class="el" href="classshark_1_1_centroids.html#a3a1d11a1cee40cfb080b56ba037920b9">shark::Centroids</a>, and <a class="el" href="classshark_1_1_hierarchical_clustering.html#a39b55be35d11299ad57826de89551e4c">shark::HierarchicalClustering&lt; InputT &gt;</a>.</p>

<p class="reference">Referenced by <a class="el" href="classshark_1_1_hard_clustering_model.html#a2036e2c4b73132196300e7d48444dc38">shark::HardClusteringModel&lt; InputT &gt;::outputShape()</a>, and <a class="el" href="classshark_1_1_soft_clustering_model.html#a5e8c47e53870f7bf4734478980e65667">shark::SoftClusteringModel&lt; InputT &gt;::outputShape()</a>.</p>

</div>
</div>
<a id="a716046b5e610f0a26e3462d8dda27f45" name="a716046b5e610f0a26e3462d8dda27f45"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a716046b5e610f0a26e3462d8dda27f45">&#9670;&#160;</a></span>read()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class InputT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classshark_1_1_abstract_clustering.html">shark::AbstractClustering</a>&lt; InputT &gt;::read </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceshark.html#ada68729491840669e47c8ad42282424f">InArchive</a> &amp;&#160;</td>
          <td class="paramname"><em>archive</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>empty default implementation of <a class="el" href="classshark_1_1_i_serializable.html#ad4ad9a7c274deff642f91e98417fbc63" title="Read the component from the supplied archive.">ISerializable::read</a> </p>

<p>Reimplemented from <a class="el" href="classshark_1_1_i_serializable.html#ad4ad9a7c274deff642f91e98417fbc63">shark::ISerializable</a>.</p>

<p>Reimplemented in <a class="el" href="classshark_1_1_centroids.html#aac250dde37c2e65581d3f9714891e04d">shark::Centroids</a>.</p>

<p class="definition">Definition at line <a class="el" href="_abstract_clustering_8h_source.html#l00178">178</a> of file <a class="el" href="_abstract_clustering_8h_source.html">AbstractClustering.h</a>.</p>

</div>
</div>
<a id="ad6babdbb7b5979c5651698982fea7ca0" name="ad6babdbb7b5979c5651698982fea7ca0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad6babdbb7b5979c5651698982fea7ca0">&#9670;&#160;</a></span>softMembership() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class InputT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual RealMatrix <a class="el" href="classshark_1_1_abstract_clustering.html">shark::AbstractClustering</a>&lt; InputT &gt;::softMembership </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classshark_1_1_abstract_clustering.html#a6865af40b0cab718706e9360b29f2a2c">BatchInputType</a> const &amp;&#160;</td>
          <td class="paramname"><em>patterns</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Compute cluster membership function. </p>
<dl class="section user"><dt></dt><dd>This function should be overriden by sub-classes to compute the membership of a pattern to the clusters. This default implementation throws an exception. </dd></dl>

<p>Reimplemented in <a class="el" href="classshark_1_1_centroids.html#ac8b603c938cfa98e3da02cd5f704d7f8">shark::Centroids</a>.</p>

<p class="definition">Definition at line <a class="el" href="_abstract_clustering_8h_source.html#l00173">173</a> of file <a class="el" href="_abstract_clustering_8h_source.html">AbstractClustering.h</a>.</p>

<p class="reference">References <a class="el" href="classshark_1_1_abstract_clustering.html#a2e5bf11e84922991bf66f4198a96e4e7a183a78cbfd5ccf4d69f2b0e733af6ad3">shark::AbstractClustering&lt; InputT &gt;::HAS_SOFT_MEMBERSHIP</a>, and <a class="el" href="_flags_8h.html#a6e41326253dee198183b5cbde3570c6c">SHARK_FEATURE_EXCEPTION</a>.</p>

</div>
</div>
<a id="abccfaab4d2d5c26ff5a16d7b085365d1" name="abccfaab4d2d5c26ff5a16d7b085365d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abccfaab4d2d5c26ff5a16d7b085365d1">&#9670;&#160;</a></span>softMembership() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class InputT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual RealVector <a class="el" href="classshark_1_1_abstract_clustering.html">shark::AbstractClustering</a>&lt; InputT &gt;::softMembership </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classshark_1_1_abstract_clustering.html#a519bea30fafabdaff33a85a1c27b8a85">InputType</a> const &amp;&#160;</td>
          <td class="paramname"><em>pattern</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Compute cluster membership function. </p>
<dl class="section user"><dt></dt><dd>This function should be overriden by sub-classes to compute the membership of a pattern to the clusters. The default implementation creates a batch of size 1 and calls the batched version. If this is not overriden, an xception is thrown. </dd></dl>

<p>Reimplemented in <a class="el" href="classshark_1_1_centroids.html#a27c10e06b07d4e747db2cfc939020e5f">shark::Centroids</a>.</p>

<p class="definition">Definition at line <a class="el" href="_abstract_clustering_8h_source.html#l00162">162</a> of file <a class="el" href="_abstract_clustering_8h_source.html">AbstractClustering.h</a>.</p>

<p class="reference">References <a class="el" href="classshark_1_1_abstract_clustering.html#abccfaab4d2d5c26ff5a16d7b085365d1">shark::AbstractClustering&lt; InputT &gt;::softMembership()</a>.</p>

<p class="reference">Referenced by <a class="el" href="classshark_1_1_soft_clustering_model.html#a347c88b0017a3c70725a3339061e1fac">shark::SoftClusteringModel&lt; InputT &gt;::eval()</a>, <a class="el" href="classshark_1_1_soft_clustering_model.html#a33826adb32937312fb6a25216d6d4df0">shark::SoftClusteringModel&lt; InputT &gt;::eval()</a>, <a class="el" href="classshark_1_1_abstract_clustering.html#af11841eae50fa5d031a7a6706e0fa9d9">shark::AbstractClustering&lt; InputT &gt;::hardMembership()</a>, and <a class="el" href="classshark_1_1_abstract_clustering.html#abccfaab4d2d5c26ff5a16d7b085365d1">shark::AbstractClustering&lt; InputT &gt;::softMembership()</a>.</p>

</div>
</div>
<a id="a320b9fed0c193643f47977269f83a3b6" name="a320b9fed0c193643f47977269f83a3b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a320b9fed0c193643f47977269f83a3b6">&#9670;&#160;</a></span>updateFeatures()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class InputT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void <a class="el" href="classshark_1_1_abstract_clustering.html">shark::AbstractClustering</a>&lt; InputT &gt;::updateFeatures </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="_abstract_clustering_8h_source.html#l00108">108</a> of file <a class="el" href="_abstract_clustering_8h_source.html">AbstractClustering.h</a>.</p>

</div>
</div>
<a id="a1256454c153c93d532738311bf7600a0" name="a1256454c153c93d532738311bf7600a0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1256454c153c93d532738311bf7600a0">&#9670;&#160;</a></span>write()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class InputT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classshark_1_1_abstract_clustering.html">shark::AbstractClustering</a>&lt; InputT &gt;::write </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceshark.html#af4f8eb8e9618f5236b71bbcb12b8a524">OutArchive</a> &amp;&#160;</td>
          <td class="paramname"><em>archive</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>empty default implementation of <a class="el" href="classshark_1_1_i_serializable.html#a9bddedd42933c922e323b73131f62f12" title="Write the component to the supplied archive.">ISerializable::write</a> </p>

<p>Reimplemented from <a class="el" href="classshark_1_1_i_serializable.html#a9bddedd42933c922e323b73131f62f12">shark::ISerializable</a>.</p>

<p>Reimplemented in <a class="el" href="classshark_1_1_centroids.html#a47f8243d170bf0c732a7c100b47574b5">shark::Centroids</a>.</p>

<p class="definition">Definition at line <a class="el" href="_abstract_clustering_8h_source.html#l00181">181</a> of file <a class="el" href="_abstract_clustering_8h_source.html">AbstractClustering.h</a>.</p>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a75910ba675486528e27893a95608510d" name="a75910ba675486528e27893a95608510d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75910ba675486528e27893a95608510d">&#9670;&#160;</a></span>m_features</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class InputT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classshark_1_1_abstract_clustering.html#a981308504604ce9fb03222b07f28a5b7">Features</a> <a class="el" href="classshark_1_1_abstract_clustering.html">shark::AbstractClustering</a>&lt; InputT &gt;::m_features</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="_abstract_clustering_8h_source.html#l00108">108</a> of file <a class="el" href="_abstract_clustering_8h_source.html">AbstractClustering.h</a>.</p>

<p class="reference">Referenced by <a class="el" href="classshark_1_1_abstract_clustering.html#a48971e367865d932891873c21cb4e849">shark::AbstractClustering&lt; InputT &gt;::hasSoftMembershipFunction()</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/shark/Models/Clustering/<a class="el" href="_abstract_clustering_8h_source.html">AbstractClustering.h</a></li>
</ul>
</div><!-- contents -->
</div>
</body>
</html>
